/* Global variables */
:root {
    --bprogress-color: #29d;
    --bprogress-height: 2px;
    --bprogress-spinner-size: 18px;
    --bprogress-spinner-animation-duration: 400ms;
    --bprogress-spinner-border-size: 2px;
    --bprogress-box-shadow: 0 0 10px var(--bprogress-color), 0 0 5px var(--bprogress-color);
    --bprogress-z-index: 99999;
    --bprogress-spinner-top: 15px;
    --bprogress-spinner-bottom: auto;
    --bprogress-spinner-right: 15px;
    --bprogress-spinner-left: auto;
}

.bprogress {
    width: 0;
    height: 0;
    pointer-events: none;
    z-index: var(--bprogress-z-index);
    position: fixed;
}

.bprogress .bar {
    background: var(--bprogress-color);
    position: fixed;
    z-index: var(--bprogress-z-index);
    top: 0;
    left: 0;
    width: 100%;
    height: var(--bprogress-height);
}

/* Fancy blur effect */
.bprogress .peg {
    display: block;
    position: absolute;
    right: 0;
    width: 100px;
    height: 100%;
    box-shadow: var(--bprogress-box-shadow);
    opacity: 1;
    transform: rotate(3deg) translate(0px, -4px);
}

/* Remove these to get rid of the spinner */
.bprogress .spinner {
    display: block;
    position: fixed;
    z-index: var(--bprogress-z-index);
    top: var(--bprogress-spinner-top);
    bottom: var(--bprogress-spinner-bottom);
    right: var(--bprogress-spinner-right);
    left: var(--bprogress-spinner-left);
}

.bprogress .spinner-icon {
    width: var(--bprogress-spinner-size);
    height: var(--bprogress-spinner-size);
    box-sizing: border-box;
    border: solid var(--bprogress-spinner-border-size) transparent;
    border-top-color: var(--bprogress-color);
    border-left-color: var(--bprogress-color);
    border-radius: 50%;
    -webkit-animation: bprogress-spinner var(--bprogress-spinner-animation-duration) linear infinite;
    animation: bprogress-spinner var(--bprogress-spinner-animation-duration) linear infinite;
}

/* Custom parent styles */
.bprogress-custom-parent {
    overflow: hidden;
    position: relative;
}

.bprogress-custom-parent .bprogress .spinner,
.bprogress-custom-parent .bprogress .bar {
    position: absolute;
}

/* Styles for indeterminate progress mode */
.bprogress .indeterminate {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: var(--bprogress-height);
    overflow: hidden;
}

.bprogress .indeterminate .inc,
.bprogress .indeterminate .dec {
    position: absolute;
    top: 0;
    height: 100%;
    background-color: var(--bprogress-color);
}

.bprogress .indeterminate .inc {
    animation: bprogress-indeterminate-increase 2s infinite;
}

.bprogress .indeterminate .dec {
    animation: bprogress-indeterminate-decrease 2s 0.5s infinite;
}

@-webkit-keyframes bprogress-spinner {
    0% {
        -webkit-transform: rotate(0deg);
        transform: rotate(0deg);
    }
    100% {
        -webkit-transform: rotate(360deg);
        transform: rotate(360deg);
    }
}

@keyframes bprogress-spinner {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}

@keyframes bprogress-indeterminate-increase {
    from {
        left: -5%;
        width: 5%;
    }
    to {
        left: 130%;
        width: 100%;
    }
}

@keyframes bprogress-indeterminate-decrease {
    from {
        left: -80%;
        width: 80%;
    }
    to {
        left: 110%;
        width: 10%;
    }
}
